1. Field of the Invention
The present invention relates to computer systems and processes running on computer systems, and, more particularly, to identification of orphan computer processes on computer systems.
2. Description of the Related Art
Computer systems are information processing systems which can be designed to give independent computing power to one user or a plurality of users. Computer systems may be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, and embedded systems. A typical computer system includes at least one processing unit, associated memory and a number of input/output (I/O) devices. In addition to other purposes, computer systems are used to track and control manufacturing processes such as semiconductor manufacturing processes and systems.
A computer system processes information according to a program and produces resultant output information via the I/O devices. A program is a list of internally stored instructions such as a particular application program and/or an operating system. A computer process typically includes an executing (running) program or portion of a program, current program values and state information, and the resources used by the operating system to manage the execution of the process. A process may spawn other processes. A process which spawns other processes is a parent process, and the spawned processes are child processes of the parent process. A function described as being performed by a parent process is sometimes actually performed by a child process spawned by the parent process to perform the function. An application or work session includes an application/work process and any processes spawned by the application/work process.
A computer system typically includes multiple computer processes executing xe2x80x9cconcurrently.xe2x80x9d Often, a computer system includes a single processing unit which is capable of supporting many active processes alternately. Although multiple processes may appear to be executing concurrently, at any given point in time only one process is actually executed by the single processing unit. By rapidly changing the process executing, a computer system gives the appearance of concurrent process execution. The ability of a computer system to multiplex the computer system""s resources among multiple processes in various stages of execution is called multitasking. Systems with multiple processing units, which by definition can support true concurrent processing are called multiprocessing systems. Active processes are often referred to as executing concurrently when such processes are executed in a multitasking and/or a multiprocessing environment.
Computer systems are often coupled to other computer systems to form a network to facilitate the exchange and handling of information. A computer network typically includes a group of computer systems and associated hardware devices (e.g., physical connections) and software applications (e.g., communications protocol programs and data). A computer network may include multiple computer processes executing on several computer systems as a distributed multiprocessing platform in which the several computer systems are accessible by each of the computer processes. A local computer system coupled to a remote computer system or a network of remote computer systems may include multiple computer processes initiated by one or more local users and/or remote users. Additionally, multiple computer processes executing on the same computer system often communicate with each other in a similar fashion as multiple computer processes executing on different computer systems. Consequently, it often makes sense to discuss interaction between computer processes instead of, or in addition to, interaction between computer systems.
Orphan computer processes are computer processes that are active or otherwise consume system resources on a computer system but that have no user that owns the process. Computer processes become orphan computer processes because of any of a number of events and circumstances. For example, a remote user can terminate a network connection without properly terminating any computer processes activated during the remote user session. When the remote user disconnects without terminating the remotely executed computer processes, the remotely executed computer processes continue to run on the local computer system. Such orphan computer processes become parasitic processes in that they use valuable computer system resources without providing a corresponding benefit to any computer system user, whether remote or local. For example, orphan computer processes can consume memory, database connections, process slots and processor cycles. Consequently, orphan computer processes can slow the performance of other, legitimate computer processes which provide benefits to users. Orphan computer processes can even prevent legitimate computer processes from executing.
It has been discovered that orphan computer processes may be automatically identified or otherwise distinguished from legitimate computer processes by a method including user initiated processes or by a software module executed by or on a computer system. Such a method or module allows the automatic termination of orphan processes and the release of computer system resources for other, legitimate computer processes. Such a method or module allows the automatic identification of orphan computer processes for analysis of use of system resources by system managers. The operation of computer systems and/or computer networks is thereby improved according to the invention. Such a method or module especially provides the advantage of freeing computer resources for use by other processes in a distributed computing system such as a semiconductor processing system.
In one embodiment of the present invention, a method of minimizing waste of information processing resources by orphan computer processes in an information processing system is provided. The method includes the following: assembling information regarding active computer processes on a computer system; classifying each of the active computer processes for which information was assembled as one of a group consisting of legitimate computer processes and orphan computer processes; and processing the orphan computer processes according to an orphan processing protocol.
In another embodiment, a method of orphan computer process identification is provided. The method includes generating process identification information regarding each of a plurality of computer processes operating on an information processing system and determining from the process identification information which of the computer processes are orphan computer processes.
In another embodiment, an apparatus includes a computer-readable storage medium. The apparatus further includes an orphan identification module stored on the computer-readable storage medium. The orphan identification module is configured to identify orphan computer processes running on a target computer system responsive to being executed on a computer system.